


#include "libPPD.h"

tCabezal cabezal;
t_config config;
int32_t *vectorSockets;
char *archivoMapeado;


int main()
{

	/* Creo el Log solo para Archivo sin Consola*/
	t_log* log = log_create("PPD", "log.txt", DEBUG | INFO | WARNING, M_CONSOLE_DISABLE);

	/* Leo Archivo Config */
	config = abrirArchivoConfig();
	log_info(log, "thread-1", "Message info: %s", "Se abrio el Archivo de Configuracion");

	/* Mapeo el Disco */

	int32_t mapearOk = 0;
	mapearOk = abrirMapearArchivoDisco (pathVolumen,&archivoMapeado);


	/* Inicializo el cabezal */
	cabezal.asciende = TRUE;
	cabezal.posActual = pasarACHS(0);


	/* Proceso Consola */
/*	int32_t listenSockConsola;
	int32_t sockfd;

	listenSockConsola = AFUNIX_abrir_conexion("./socket");
	if(listenSockConsola > 0)
		printf ("Se abrio servidor para la Consola\n");
	else
		printf ("No se pudo abrir servidor para la Consola\n");
	iniciarConsola();
	sockfd = aceptar_conexion (listenSockConsola);
*/

	/* Recibe un comando de la Consola y contesta*/
/*
	t_NIPC paquete;
	int32_t ret;

	ret = NIPC_recibir (sockfd, &paquete,0);
	if (ret>0)
		info();
	getchar();
*/

/*
	respuesta = NIPC_crearpaquete (NULL, CMD, 0, info, 0);
	ret = NIPC_enviar (sockfd, respuesta);

	NIPC_destruirpaquete(&paquete);
	NIPC_destruirpaquete(&respuesta);

*/


	if (strcmp(config.modoInicio, "CONNECT") == 0)
	{
		//El disco realiza la función de acoplarse al PRAID
		int32_t socketConnectPRAID=0;
		socketConnectPRAID = AFINET_conectar (config.dirIPpraid, config.puertoPRAID);

	}

	else if (strcmp(config.modoInicio, "LISTEN") == 0)
	{
		//El disco espera a que el PFS se conecte
		crearPoolConexiones();
		struct pollfd descriptoresLectura[config.cantConexiones];
		setearFD(descriptoresLectura);
		recibirPedidos(descriptoresLectura);


	}

	return 0;

}
